Skip to content

docs(blog): Agentic Guardrails and Controls - #6329

Merged
blackgirlbytes merged 10 commits into
aaif-goose:mainfrom
shellz-n-stuff:docs/blog-agentic-guardrails-and-controls
Jan 5, 2026
Merged

docs(blog): Agentic Guardrails and Controls#6329
blackgirlbytes merged 10 commits into
aaif-goose:mainfrom
shellz-n-stuff:docs/blog-agentic-guardrails-and-controls

Conversation

@shellz-n-stuff

Copy link
Copy Markdown
Collaborator

Summary

This PR adds the Blog Post relating to MCP (and general agentic tool usage security) based on the CORS model.

A minor change has been made to the hosting engine to allow specification of reading time. This was due to the reading time not being accurately estimated with Google Docs style image markdown conversions.

Type of Change

  • Feature
  • Bug fix
  • Refactor / Code quality
  • Performance improvement
  • Documentation
  • Tests
  • Security fix
  • Build / Release
  • Other (specify below)

AI Assistance

  • This PR was created or reviewed with AI assistance

Testing

Screenshot 2025-12-31 at 7 02 32 am
  • Locally tested

@shellz-n-stuff
shellz-n-stuff requested a review from a team as a code owner January 5, 2026 04:35
Copilot AI review requested due to automatic review settings January 5, 2026 04:35
},
blog: {
showReadingTime: true,
readingTime: ({ content, frontMatter, defaultReadingTime }) =>

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Allows this to be provided (optionally) as metadata on the post

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds a blog post about applying the CORS security model to agentic AI systems and MCP tool calling. The post discusses content injection attacks against LLMs and proposes guardrails similar to browser CORS protections.

  • Adds custom reading time support in Docusaurus configuration to override automatic reading time calculations
  • Adds new author Clinton Carpene and updates Alex Rosenzweig's profile image URL
  • Includes new blog post dated 2026-01-05 covering agent security guardrails

Reviewed changes

Copilot reviewed 2 out of 4 changed files in this pull request and generated no comments.

File Description
documentation/docusaurus.config.ts Adds readingTime function to allow front matter override of calculated reading time
documentation/blog/authors.yml Adds clinton author entry and updates alex's LinkedIn profile image URL with permanent link
documentation/blog/2026-01-05/index.md New blog post on applying CORS security model to agent tool calling (not shown in diff but present in PR)
documentation/blog/2026-01-05/agentic_guardrails_header.png Header image for the new blog post (not shown in diff but present in PR)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this directory should be named something like documentation/blog/2026-01-05-agentic-guardrails-and-controls

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On it!

@blackgirlbytes

Copy link
Copy Markdown
Collaborator

this needs to change to your actual image url address..

 <meta property="og:image" content="http://block.github.io/goose/assets/images/agent-guardrails-header.png" />

I think it should be this

 <meta property="og:image" content="http://block.github.io/goose/assets/images/agentic_guardrails_header-bb29f4bf9535195b45a0483af23feb14.png" />

same with this

 <meta name="twitter:image" content="http://block.github.io/goose/assets/images/agent-guardrails-header.png" />

@blackgirlbytes

Copy link
Copy Markdown
Collaborator

why hard code the reading time? reading_time: 10

@shellz-n-stuff

Copy link
Copy Markdown
Collaborator Author

why hard code the reading time? reading_time: 10

The reading time estimate is incorrect due to it interpreting the images as additional text to read

@blackgirlbytes

blackgirlbytes commented Jan 5, 2026

Copy link
Copy Markdown
Collaborator

remove the first header # Agent Guardrails and Controls: Applying the CORS Model to Agents because the title already creates the header, so this is a duplicate and please remove #Background

sorry the diff is too large so Im not able to see it and comment on particular lines. I just checked out the branch on my side

@blackgirlbytes

Copy link
Copy Markdown
Collaborator

Oh I think you need to add a truncate tag! :D

You can do it here

In [our previous blog post](https://block.github.io/goose/blog/2025/03/31/securing-mcp/) we detailed the Model Context Protocol (MCP) system and discussed some security concerns and mitigations. As a brief recap, MCP provides agents with a means to accomplish tasks using defined tools; reducing the burden of using complex and varied APIs and integrations on the agent.
<!--truncate-->

Copilot AI review requested due to automatic review settings January 5, 2026 05:14
@blackgirlbytes

Copy link
Copy Markdown
Collaborator

Numbering/lettering is mixed up a little here

Screenshot 2026-01-05 at 12 14 23 AM

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 4 changed files in this pull request and generated 1 comment.

clinton:
name: Clinton Carpene
title: Staff Security Engineer
image_url: https://avatars.githubusercontent.com/u/244417824?v=4

Copilot AI Jan 5, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The GitHub avatar user ID '244417824' appears unusually high for a standard GitHub user ID pattern. GitHub user IDs are typically sequential integers that are much lower in value. Verify this is the correct user ID by checking the GitHub profile directly, as an incorrect ID will result in a broken profile image.

Suggested change
image_url: https://avatars.githubusercontent.com/u/244417824?v=4
image_url: https://github.com/ccarpene-blk.png

Copilot uses AI. Check for mistakes.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Our original link works and aligns with the convention of other links

@shellz-n-stuff

Copy link
Copy Markdown
Collaborator Author

Numbering/lettering is mixed up a little here

Screenshot 2026-01-05 at 12 14 23 AM

This was expected. I could add Q: in front of the first bits?

@blackgirlbytes

blackgirlbytes commented Jan 5, 2026

Copy link
Copy Markdown
Collaborator

hmm many of the headings are using h1 like # Caveats and Limitations , but they may need ## or ### . Because it didnt generate a Table of Contents for you all, which would be super helpful.

also when i click : If you already know all this stuff feel free to skip forward >>, it doesnt scroll to the thread model paragraph for me

@blackgirlbytes

Copy link
Copy Markdown
Collaborator

Numbering/lettering is mixed up a little here
Screenshot 2026-01-05 at 12 14 23 AM

This was expected. I could add Q: in front of the first bits?

ohhhhhh hmmmm..possible suggestion

Q1. When is it plausible that an LLM is responding to non-user inputs?
A1. After it has received a response from any non-user actor, specifically MCP or tool calls.

Q2. What is the list of plausible identities the LLM could be responding to?
A2. All tools called since the last time the model communicated with the user.

Q3. Would it be appropriate to trigger the tool call in response to any of these possible identities?
A3. We’ll get there, but at this point you can probably see it’s going to resemble CORS 😉

@shellz-n-stuff

Copy link
Copy Markdown
Collaborator Author

hmm many of the headings are using h1 like # Caveats and Limitations , but they may need ## or ### . Because it didnt generate a Table of Contents for you all, which would be super helpful.

also when i click : If you already know all this stuff feel free to skip forward >>, it doesnt scroll to the thread model paragraph for me

Let me make that change really quickly

@shellz-n-stuff

Copy link
Copy Markdown
Collaborator Author

Numbering/lettering is mixed up a little here
Screenshot 2026-01-05 at 12 14 23 AM

This was expected. I could add Q: in front of the first bits?

ohhhhhh hmmmm..possible suggestion

Q1. When is it plausible that an LLM is responding to non-user inputs?
A1. After it has received a response from any non-user actor, specifically MCP or tool calls.

Q2. What is the list of plausible identities the LLM could be responding to?
A2. All tools called since the last time the model communicated with the user.

Q3. Would it be appropriate to trigger the tool call in response to any of these possible identities?
A3. We’ll get there, but at this point you can probably see it’s going to resemble CORS 😉

Sure! All changed

@blackgirlbytes

Copy link
Copy Markdown
Collaborator

im thinking you can make the blog post more skimmable if you wrap the json in a details tag like this

<details>
<summary>Example: Agent conversation with tool calls</summary>

```json
[
  {
    "type": "tool_definition",
    "tool": {
      "name": "read_email",
      "description": "Read the user's email.",
      "input_schema": {
        "type": "object",
        "properties": {
          "folder": { "type": "string" },
          "unread_only": { "type": "boolean" },
          "limit": { "type": "integer" }
        },
        "required": ["folder"]
      }
    }
  },
  {
    "type": "content",
    "role": "system",
    "content": [
      {
        "type": "text",
        "text": "You are an assistant that helps the user manage their email. Use tools whenever needed."
      }
    ]
  },
  {
    "type": "content",
    "role": "user",
    "content": [
      {
        "type": "text",
        "text": "Can you check my unread emails and tell me if any mention security?"
      }
    ]
  },
  {
    "type": "action",
    "action": "read_email",
    "action_id": "act_001",
    "parameters": {
      "folder": "INBOX",
      "unread_only": true,
      "limit": 10
    }
  },
  {
    "type": "action_result",
    "action_id": "act_001",
    "result": {
      "emails": [
        {
          "id": "msg_1",
          "subject": "Team update",
          "from": "eng-leads@example.com",
          "body": "Hey team,\nJust a quick note: security rocks.\nThanks,\nEng Leads"
        },
        {
          "id": "msg_2",
          "subject": "Lunch",
          "from": "friend@example.com",
          "body": "Hey, want to grab lunch tomorrow?"
        }
      ]
    }
  },
  {
    "type": "content",
    "role": "assistant",
    "content": [
      {
        "type": "text",
        "text": "I checked your unread emails. One email titled \"Team update\" mentions security and says: \"security rocks.\" Another unread email does not mention security."
      }
    ]
  }
]

@shellz-n-stuff

Copy link
Copy Markdown
Collaborator Author
<details>
<summary>Example: Agent conversation with tool calls</summary>

Love this idea! Pushing the change now
Screenshot 2026-01-05 at 4 38 24 pm
Screenshot 2026-01-05 at 4 38 36 pm

Copilot AI review requested due to automatic review settings January 5, 2026 05:39

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 4 changed files in this pull request and generated no new comments.

Copilot AI review requested due to automatic review settings January 5, 2026 10:10

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 4 changed files in this pull request and generated no new comments.

@blackgirlbytes blackgirlbytes left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

amazing!

@blackgirlbytes
blackgirlbytes merged commit d1f242b into aaif-goose:main Jan 5, 2026
20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants